<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div id="box">去百度</div>
  <script>
      let obj={
        house:"汤臣一品",
        price:"2亿",
        address:"东方之珠斜对面",
        phone:"18866667777"
      }
      // Object.defineProperty(obj,"myname",{
      //   value:"老王",
      //   writable:false,//能否被改写
      //   configurable:false,//能否被删除
      //   enumerable:false,//能否被遍历
      // })
      // 对象的拦截和赋值操作
      let temp;
    Object.defineProperty(obj,"phone",{
        get(){ //赋值拦截的值
          return temp
        },
        set(value){ //拦截到对象的复制操作
            if(/^1[3|5|6|7|8|9]\d{9}$/.test(value)){
              temp=value;
              document.write(value.replace(value.substr(3,4),"****"))
            }
         
        }
    })
obj.phone="18855554444"

      // Proxy，代理，可以理解成，在目标对象之前架设一层“拦截”，外界对该对象的访问，都必须先通过这层拦截，因此提供了一种机制，可以对外界的访问进行过滤和改写。
              //  ES6 原生提供 Proxy 构造函数，用来生成 Proxy 实例。
          let objs={
              car:"奔驰",
              price:180000,
              color:"红色"
          }    
          // target 代理的对象
       let p = new Proxy(objs, { 
        // get 上三个形参 
              // target 代理的对象 
              // key 对象每一个值
              // receiver：指向原始的读操作所在的那个对象，一般情况下  就是 Proxy 实例
          get(target,key,receiver){
            console.log(receiver)
            if(key=="price"){
              target[key]+=20000
            }
            return target[key]
          },
          // target 代理的对象
          // key 对象key
          // value 新的拦截到的值
          // // receiver：指向原始的读操作所在的那个对象，一般情况下  就是 Proxy 实例
          set(target,key,value){ //拦截到操作
            if(key=="color"){
              target[key]=value+"限量款"
            }
          }
        });
        console.log(p.price)
        // 
        p.color="蓝色"
        
        console.log(p)
     
        let url={
          baidu:"http:www.baidu.com",
          tianmao:"http:www.tianmao.com"
        }
        let p1=new Proxy(url,{
          get(target,key){
              if(key=="baidu"||key=="tianmao"){
                  target[key]="http://jd.com"
              }
              return target[key]
          },
          set(){}
        })
        let box=document.getElementById("box")
        box.onclick=function(){
          location.href=p1.baidu
        }

  </script>
</body>
</html>